package wang_si_bo;
/**
 * @Author WangSibo
 * @Date 2021/1/23 16:37
 * @Version 1.0
 */
public class WANG_SI_BO_23_Q1<T> {
    private Node head; //首节点
    public int S;  //元素的个数
    private class Node {
        public T t;  //存储元素
        public Node next; //下一个结点
        public Node(T item, Node next) {
            this.t = item;
            this.next = next;
        }
    }
    public WANG_SI_BO_23_Q1() {
        this.head = new Node(null, null);  //初始化head
        this.S = 0;//默认为0
    }
    //入栈
    public void jion(T t) {
        Node oldFirst = head.next; //首节点指向的第一个结点
        Node newNode = new Node(t, null); //创建新结点t,初始化不指向任何元素
        head.next = newNode;  //让首节点指向新结点
        newNode.next = oldFirst; //让新结点指向原来的第一个结点
        //元素个数+1
    }

    //出栈
    public T out() {
        Node oldFirst = head.next;   //找到首节点指向的第一个结点
        if (oldFirst != null) {  //防止oldFirst为空，产生空指针
            return null;
        }
        head.next = oldFirst.next; //让首节点指向原来第一个结点的下一个结点
        S--;  //元素个数-1
        return oldFirst.t; //将元素返回
    }

}
